/*!
\copyright  Copyright (c) 2020 Qualcomm Technologies International, Ltd.
            All Rights Reserved.
            Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file
\ingroup    kymera
\brief      Handles music processing chain

*/

#ifndef KYMERA_MUSIC_PROCESSING_H_
#define KYMERA_MUSIC_PROCESSING_H_

#include <operator.h>

/*@{*/

typedef struct
{
    void (*MusicProcessingStart)(void);
    void (*MusicProcessingStop)(void);
} kymera_music_processing_event_callbacks_t;

void Kymera_InitMusicProcessing(void);

void Kymera_RegisterMusicProcessingCallbacks(kymera_music_processing_event_callbacks_t *event_callbacks);

/*! \brief Check if music processing chain is present and can be used.

    \return TRUE if chain is present
*/
bool Kymera_IsMusicProcessingPresent(void);

/*! \brief Create music processing operators.

    Currently only Speaker EQ is implemented, which doesn't require any parameters.
*/
void Kymera_CreateMusicProcessingChain(void);

/*! \brief Configure music processing operators.

    Currently only Speaker EQ is implemented, which doesn't require any parameters.
*/
void Kymera_ConfigureMusicProcessing(uint32 sample_rate);

/*! \brief Configure music processing operators, extra settings required for aptx adaptive

*/
void Kymera_ConfigureMusicProcessing_AdditionalforAptxAdaptive(void);

void Kymera_StartMusicProcessingChain(void);

void Kymera_StopMusicProcessingChain(void);

void Kymera_DestroyMusicProcessingChain(void);

Operator Kymera_GetUserEqOperator(void);

void AudioMusicProcessingEqConfigMaterGian(int32 gain_db);

/*@}*/

#endif /* KYMERA_MUSIC_PROCESSING_H_ */
